package com.rc.saas.mini.service.invoice;

import com.github.pagehelper.PageInfo;
import com.rc.saas.mini.common.base.BaseService;
import com.rc.saas.mini.common.base.TResponse;
import com.rc.saas.mini.mapper.invoice.InvoiceApplyMapper;
import com.rc.saas.mini.model.invoice.InvoiceApply;
import com.rc.saas.mini.model.invoice.InvoiceApplyExample;
import com.rc.saas.mini.model.member.MemberInfo;
import com.rc.saas.mini.model.order.OrderInfo;
import com.rc.saas.mini.service.invoice.pojo2.ReturnElectronice;
import com.rc.saas.mini.vo.invoice.InvoiceApplyVo;
import com.rc.saas.mini.vo.invoice.InvoiceApplyWithIdVo;

import java.util.List;

/**
 * @author wangzhengwei
 * @create 2021/4/28
 */
public interface InvoiceApplyService extends BaseService<Long, InvoiceApply, InvoiceApplyExample, InvoiceApplyMapper> {
    PageInfo<InvoiceApplyVo> listPageInvoiceApply(Long memberId,  String invoiceNormalType, Integer pageNo, Integer pageSize);

    InvoiceApply insertRetrunId(MemberInfo member, InvoiceApplyVo addInvoiceVo, List<Long> orderIdList, List<OrderInfo> orderInfoList,
                                String invoiceApplyStatus, String invoiceApplyProxyType, String invoiceOrderUpdateflag, ReturnElectronice invEli, String invoiceNormalType);


    TResponse createInvoice(InvoiceApplyVo invoice, MemberInfo member);

    TResponse createEntInvoice(InvoiceApplyVo invoiceApplyVo, MemberInfo member);

    InvoiceApplyVo selectInvoiceApplyById(Long invoiceApplyId);

    InvoiceApplyVo selectInvoiceApplyByOrderId(Long orderId);

    List<InvoiceApplyWithIdVo> listByOrderIds(List<Long> ids);
}
